home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’97 / Warrior’s Progress / source code / Source / Libraries / Menus / High Level / ExtensibleMenuSection.cp next >
Encoding:
Text File  |  1997-06-28  |  1.8 KB  |  87 lines  |  [TEXT/CWIE]

  1. // ExtensibleMenuSection.cp
  2.  
  3. #ifndef ExtensibleMenuSection_h
  4. #include "ExtensibleMenuSection.h"
  5. #endif
  6.  
  7. ExtensibleMenuSection::ExtensibleMenuSection( Menu& menu )
  8.   : MenuSection( menu, extensible )
  9.   {
  10.   }
  11.  
  12. uint16 ExtensibleMenuSection::Length() const
  13.   {
  14.     Assert( menu.Length() >= FirstItem() )
  15.     return menu.Length() - FirstItem();
  16.   }
  17.  
  18. MenuItem ExtensibleMenuSection::operator[]( uint16 index )
  19.   {
  20.     return menu[ firstItem + index ];
  21.   }
  22.  
  23. void ExtensibleMenuSection::EnableTail( uint32 begin )
  24.   {
  25.     uint32 length = Length();
  26.     Assert( begin <= length );
  27.     
  28.     for ( ; begin < length; begin++ )
  29.       {
  30.         MenuItem item( (*this)[begin] );
  31.         if ( item.CanEnableIndividually() )
  32.             item.Enable();
  33.          else
  34.           {
  35.             menu.EnableTail();
  36.             return;
  37.           }
  38.       }
  39.   }
  40.  
  41. void ExtensibleMenuSection::DisableTail( uint32 begin )
  42.   {
  43.     uint32 length = Length();
  44.     Assert( begin <= length );
  45.     
  46.     for ( ; begin < length; begin++ )
  47.       {
  48.         MenuItem item( (*this)[begin] );
  49.         if ( item.CanEnableIndividually() )
  50.             item.Disable();
  51.          else
  52.           {
  53.             menu.DisableTail();
  54.             return;
  55.           }
  56.       }
  57.   }
  58.  
  59. void ExtensibleMenuSection::InsertItem( uint16 index, ConstPString text )
  60.   {
  61.     Assert( CanAdd( FirstItem(), index ) );
  62.     menu.InsertItem( FirstItem() + index, text );
  63.   }
  64.  
  65. void ExtensibleMenuSection::InsertDivider( uint16 index )
  66.   {
  67.     Assert( CanAdd( FirstItem(), index ) );
  68.     menu.InsertDivider( FirstItem() + index );
  69.   }
  70.  
  71. void ExtensibleMenuSection::InsertResources( uint16 index, ResType type )
  72.   {
  73.     Assert( CanAdd( FirstItem(), index ) );
  74.     menu.InsertResources( FirstItem() + index, type );
  75.   }
  76.  
  77. void ExtensibleMenuSection::DeleteItem( uint16 index )
  78.   {
  79.     Assert( CanAdd( FirstItem(), index ) );
  80.     menu.DeleteItem( FirstItem() + index );
  81.   }
  82.  
  83. void ExtensibleMenuSection::DeleteAll()
  84.   {
  85.     menu.DeleteItems( URange16( FirstItem(), menu.Length() ) );
  86.   }
  87.